package com.shujia.method_.six;

public class MethodDemo1 {

    /*
    方法重载指同一个类中定义的多个方法之间的关系，满足下列条件的多个方法相互构成重载

     */
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        boolean flag1 = compare(num1, num2);
        System.out.println(flag1);

        byte b1 = 20;
        byte b2 = 30;
        // 隐式的类型转换, 可以直接调用
        boolean flag2 = compare(b1, b2);
        System.out.println(flag2);

        long l1 = 200;
        long l2 = 300;
        // 传入的变量类型和形参的数据类型不匹配, 会报错
        // 重载long类型的compare方法后, 这里调用的是新的方法
        boolean flag3 = compare(l1, l2);
        System.out.println(flag3);

        boolean flag4 = compare(20, 20, 20);
        System.out.println(flag4);
    }

    public static boolean compare(byte num1, byte num2) {
        System.out.println("compare byte...");
        return num1 == num2;
    }

    // 需求：使用方法重载的思想，设计比较两个整数是否相同的方法，
    // 兼容全整数类型（byte,short,int,long）
    public static boolean compare(int num1, int num2) {
        System.out.println("compare int...");
        return num1 == num2;
    }

    /*
    比较2个int类型的值, 把结果打印出来
    当前和方法和 public static boolean compare(int num1, int num2) {
    虽然返回值类型不同, 但是方法名相同, 参数相同,是不能够形成方法的重载
    会报错, 只能保留一个
     */
//    public static void compare(int num1, int num2) {
//        boolean result = (num1 == num2);
//        System.out.println(result);
//    }

    // 比较3个int类型的参数是否相等, 也算重载, 因为参数的个数不同
    public static boolean compare(int num1, int num2, int num3) {
        System.out.println("compare int three...");
        if (num1 == num2 && num2 == num3) {
            return true;
        } else {
            return false;
        }
    }


    /*
    重载compare方法
    多个方法在同一个类中
    多个方法具有相同的方法名
    多个方法的参数不相同，类型不同或者数量不同
    跟返回值类型没有关系
     */
    public static boolean compare(long num1, long num2) {
        System.out.println("compare long...");
        return num1 == num2;
    }


}
